﻿#ifndef PAINT_H
#define PAINT_H

/* 此类使用上有以下限制:
 * 1.画布大小仅能在初始化的时候决定
 * 2.无法部分区域重画,需要重画必须将画布清空
 */

/*
 * Qt默认使用左上角坐标系（相对于画面、画布等）,x轴正方向向右，y轴正方向向下，画布的左上角
 * 记录端点坐标使用的是原点坐标系（相对于此对象的范围）,x轴正方向向右，y轴正方向向下，原点为画布的中心
 */

#include "VPoint.h"
#include <QPixmap>
#include <QVector>
#include <QString>
#include <QPainter>

class Paint
{
public:
    Paint(const VPoint &top_left, const VPoint &bottom_right);
    Paint(const QString &medium, const QVector<VPoint> &points, double radius);
    ~Paint();


    void draw(const VPoint &site, const Paint &paint);
    /*
     * 参数1：VPoint &site
     * 参数2：Paint &paint
     * 未使用
     * 未使用原因：此函数属于递归操作
     * 画出此传入的参数引用&Paint的对象
     */

    void clear();
    /*
     * 清空当前画布操作
     */

    const QPixmap & pixmap() const;
    /*
     * 获取此对象的画布内容
     */

    const VPoint & delta() const;
    /*
     * 获取此对象的相对坐标差
     */
private:


    void paintMap(const QString &medium,const QVector<VPoint> &points, double radius);
    /*
     * 参数1：const QString &medium
     * 参数2：const QVector<VPoint> &points
     * 参数3：double radius
     * 画出此对象的画布内容
     */

    VPoint site;//此画布的左上角在画面上的坐标（左上角坐标系）
    QPixmap *_map;//记录画布内容,大小
};

#endif // PAINT_H
